package com.deyuanyun.pic.ae.controller.dto;

import com.deyuanyun.pic.ae.domain.Sewer;
import com.deyuanyun.pic.ae.domain.SpecificPlace;
import com.deyuanyun.pic.ae.domain.TrafficFacilities;
import com.deyuanyun.pic.common.util.DateUtil;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.validation.Errors;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 沿线特定场所 创建或者修改 数据传输对象
 */
public class SpecificPlaceEdit extends AEBaseEdit<SpecificPlace> {

    // 管道编号
    @NotEmpty(message = "管道名称 不能为空")
    private String pipeLineId;
    // 名称
    @NotEmpty(message = "名称 不能为空")
    private String name;
    // 类别AESEWER_CATEGORY（特定场所Ⅰ、特定场所Ⅱ）
    @NotEmpty(message = "类别 不能为空")
    private String category;
    // 类型AESEWER_TYPE（医院、学校、托儿所、幼儿园、养老院、监狱、商场、集贸市场、寺庙、运动场、广场、娱乐休闲地、剧院、露营地、其它）
    @NotEmpty(message = "类型 不能为空")
    private String type;
    // 人口数量
    private Long population;
    // 位置X
    private BigDecimal positionX;
    // 位置Y
    private BigDecimal positionY;
    // 位置Z
    private BigDecimal positionZ;
    // 位置描述
    private String locationDescription;
    // 最小间距（m）
    private BigDecimal minDistance;

    public String getPipeLineId() {
        return pipeLineId;
    }

    public void setPipeLineId(String pipeLineId) {
        this.pipeLineId = pipeLineId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Long getPopulation() {
        return population;
    }

    public void setPopulation(Long population) {
        this.population = population;
    }

    public BigDecimal getPositionX() {
        return positionX;
    }

    public void setPositionX(BigDecimal positionX) {
        this.positionX = positionX;
    }

    public BigDecimal getPositionY() {
        return positionY;
    }

    public void setPositionY(BigDecimal positionY) {
        this.positionY = positionY;
    }

    public BigDecimal getPositionZ() {
        return positionZ;
    }

    public void setPositionZ(BigDecimal positionZ) {
        this.positionZ = positionZ;
    }

    public String getLocationDescription() {
        return locationDescription;
    }

    public void setLocationDescription(String locationDescription) {
        this.locationDescription = locationDescription;
    }

    public BigDecimal getMinDistance() {
        return minDistance;
    }

    public void setMinDistance(BigDecimal minDistance) {
        this.minDistance = minDistance;
    }

    @Override
    public void fromDomain(SpecificPlace domain) {

        // 管道编号
        this.pipeLineId = domain.getPipeLineId();
        // 名称
        this.name = domain.getName();
        // 类别AESEWER_CATEGORY（特定场所Ⅰ、特定场所Ⅱ）
        this.category = domain.getCategory();
        // 类型AESEWER_TYPE（医院、学校、托儿所、幼儿园、养老院、监狱、商场、集贸市场、寺庙、运动场、广场、娱乐休闲地、剧院、露营地、其它）
        this.type = domain.getType();
        // 人口数量
        this.population = domain.getPopulation();
        // 位置X
        this.positionX = domain.getPositionX();;
        // 位置Y
        this.positionY = domain.getPositionY();
        // 位置Z
        this.positionZ = domain.getPositionZ();
        // 位置描述
        this.locationDescription = domain.getLocationDescription();
        // 最小间距（m）
        this.minDistance = domain.getMinDistance();

        super.fromDomain(domain.getId(), domain.getRecorder(), domain.getRecordTime(), domain.getRemarks());
    }

    @Override
    public SpecificPlace toDomain() {

        SpecificPlace specificPlace = new SpecificPlace();
        // 管道编号
        specificPlace.setPipeLineId(this.pipeLineId);
        // 名称
        specificPlace.setName(this.name);
        // 类别AESEWER_CATEGORY（特定场所Ⅰ、特定场所Ⅱ）
        specificPlace.setCategory(this.category);
        // 类型AESEWER_TYPE（医院、学校、托儿所、幼儿园、养老院、监狱、商场、集贸市场、寺庙、运动场、广场、娱乐休闲地、剧院、露营地、其它）
        specificPlace.setType(this.type);
        // 人口数量
        specificPlace.setPopulation(this.population);
        // 位置X
        specificPlace.setPositionX(this.positionX);;
        // 位置Y
        specificPlace.setPositionY(positionY);
        // 位置Z
        specificPlace.setPositionZ(this.positionZ);
        // 位置描述
        specificPlace.setLocationDescription(this.locationDescription);
        // 最小间距（m）
        specificPlace.setMinDistance(this.minDistance);

        // id
        specificPlace.setId(this.getId());
        // 记录人
        specificPlace.setRecorder(this.getRecorder());
        // 记录时间
        Date recordTimeTemp = null;
        try {
            recordTimeTemp = DateUtil.allStr2Date(this.getRecordTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
        specificPlace.setRecordTime(recordTimeTemp);
        // 备注
        specificPlace.setRemarks(this.getRemarks());

        return specificPlace;
    }
}